package com.atguigu.day21.obj04;

import org.junit.Test;

import java.io.*;

/*
对象流:
   序列化: 将内存中的一个对象 存储到磁盘中
   反序列化: 将磁盘中的对象读取到程序内
注意:
   1.NotSerializableException
     序列化对象所在的类必须实现接口 Serializable
   2.某些属性不想被序列化可以在属性前 + transient / static
   3.序列化和反序列化 serialVersionUID 要一致


 */
public class ObjectStreamTest {

    @Test
    public void test02() throws IOException, ClassNotFoundException {
     //todo 反序列化
        //1.创建对象输入流
        //节点流
        InputStream is = new FileInputStream("D:/obj.txt");
        //处理流
        ObjectInputStream ois = new ObjectInputStream(is);
        //2.读取对象
        //多态
        Object o = ois.readObject();
        //3.展示对象
        System.out.println("o = " + o);
        //4.关闭资源
    }
    @Test
    public void test01() throws IOException {
        //todo 序列化
        //1.创建一个Person对象
        Person p = new Person("杨幂", 20, '女', 999999.9, "China");

        //2.创建对象输出流
        //节点流
        OutputStream os = new FileOutputStream("D:/obj.txt");
        //处理流
        ObjectOutputStream oos = new ObjectOutputStream(os);
        //3.写出对象
        oos.writeObject(p);
        //4.关闭资源
        oos.close();

    }
}
